import { login, getInfo } from '@/api/user'
import { getToken, setToken, removeToken } from '@/utils/auth'
import { getBaseInfo } from '@/api/employees'

const state = {
  // token数据
  token: getToken(),
  userInfo: {},   // 用户信息
}

const mutations = {
  // 保存token到 cookie  &  vuex
  saveToken (state, payload) {
    state.token = payload
    setToken(payload)
  },
  // 删除token
  removeToken (state) {
    state.token = null
    removeToken()
  },
  // 保存用户信息
  saveUserInfo(state, payload){
    state.userInfo = payload
  },
  // 删除用户信息
  deleteUserInfo(){
    state.userInfo = {}
  }
}

const actions = {
  // user login
  async userlogin (context, payload) {
    // payload : 传入的参数
    let res = await login(payload)
    console.log(res)
    // 判断登录是否成功
    if (res.data.success) {
      let token = res.data.data
      // 调用mutations中的方法来保存token
      context.commit('saveToken', token)
    }
  },
  // 调用接口获取信息并保存
  async getUserInfo(context){
    let res = await getInfo()
    // console.log(res);
    // console.log(res.data.data.userId);
    // 获取基本信息
    let baseRes = await getBaseInfo(res.data.data.userId)
    // console.log(baseRes);
    // 合并信息
    let result = {...res.data.data, ...baseRes.data.data}
    context.commit('saveUserInfo', result)
    // 伏笔 返回数据
    return result
  },
  // 退出登录
  logout(context) {
    // 删除token
    context.commit('removeToken')
    // 清除用户信息
    context.commit('deleteUserInfo')
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
